

<!DOCTYPE html>
<html>
<head>
    <title>Pilgrim</title>

    <!-- meta -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- css -->
    <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
    <link rel="stylesheet" href="/static/blog/css/bootstrap.min.css">
    <link rel="stylesheet" href="/static/blog/css/pace.css">
    <link rel="stylesheet" href="/static/blog/css/custom.css">
    <link rel="stylesheet" href="/static/blog/css/highlights/github.css">

    <style>
        span.highlighted {
            color: yellow;
        }
    </style>

    <!-- js -->
    <script src="/static/blog/js/jquery-2.1.3.min.js"></script>
    <script src="/static/blog/js/bootstrap.min.js"></script>
    <script src="/static/blog/js/pace.min.js"></script>
    <script src="/static/blog/js/modernizr.custom.js"></script>
</head>

<body>
<div class="container">
    <header id="site-header">
        <div class="row">
            <div class="col-md-4 col-sm-5 col-xs-8">
                <div class="logo">
                    <h1><a href="/"><b>Pilgrim</b></a></h1>
                </div>
            </div><!-- col-md-4 -->
            <div class="col-md-8 col-sm-7 col-xs-4">
                <nav class="main-nav" role="navigation">
                    <div class="navbar-header">
                        <button type="button" id="trigger-overlay" class="navbar-toggle">
                            <span class="ion-navicon"></span>
                        </button>
                    </div>

                    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                        <ul class="nav navbar-nav navbar-right">
                            <li class="cl-effect-11"><a href="/" data-hover="首页">首页</a></li>
                            <li class="cl-effect-11"><a href="#" data-hover="博客">博客</a></li>
                            <li class="cl-effect-11"><a href="#" data-hover="关于">关于</a></li>
                            <li class="cl-effect-11"><a href="#" data-hover="联系">联系</a></li>
                        </ul>
                    </div><!-- /.navbar-collapse -->
                </nav>
                <div id="header-search-box">
                    <a id="search-menu" href="#"><span id="search-icon" class="ion-ios-search-strong"></span></a>
                    <div id="search-form" class="search-form">
                        <form role="search" method="get" id="searchform" action="/search/">
                            <input type="search" name="q" placeholder="搜索" required>
                            <button type="submit"><span class="ion-ios-search-strong"></span></button>
                        </form>
                    </div>
                </div>
            </div><!-- col-md-8 -->
        </div>
    </header>
</div>
<div class="copyrights">Collect from <a href="#">blog</a></div>
<div class="copyrights">Modified by <a href="#">博客</a></div>

<div class="content-body">
    <div class="container">
        <div class="row">
            <main class="col-md-8">
                
    <article class="post post-18">
        <header class="entry-header">
            <h1 class="entry-title">Docker</h1>
            <div class="entry-meta">
                <span class="post-category">
                    <a href="/category/10/">Docker</a></span>
                <span class="post-date"><a href="#"><time class="entry-date"
                                                          datetime="2019年10月20日 22:23">2019年10月20日 22:23</time></a></span>
                <span class="post-author"><a href="#">chenjj</a></span>
                <span class="comments-link">
                    <a href="/post/18/#comment-area">0 评论</a></span>
                <span class="views-count"><a href="#">15 阅读</a></span>
            </div>
        </header>
        <div class="entry-content clearfix">
            <p>Docker 是一个开源的应用容器引擎，让开发者可以打包他们的应用以及依赖包到一个可移植的容器中，然后发布到任何流行的Linux机器上，也可以实现虚拟化，相互之间不会有任何接口。
Docker 包括三个基本概念</p>
<div class="codehilite"><pre><span></span>镜像（Image）
容器（Container）
仓库（Repository）
</pre></div>


<p>更高效的利用系统资源</p>
<div class="codehilite"><pre><span></span>由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销，Docker 对系统资源的利用率更高。 
无论是应用执行速度、内存损耗或者文件存储速度，都要比传统虚拟机技术更高效。因此，相比虚拟 
机技术，一个相同配置的主机，往往可以运行更多数量的应用。
</pre></div>


<p>更快速的启动时间</p>
<div class="codehilite"><pre><span></span>传统的虚拟机技术启动应用服务往往需要数分钟，而 Docker 容器应用，由于直接运行于宿主内核， 
无需启动完整的操作系统，因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、 
部署的时间。
</pre></div>


<p>一致的运行环境</p>
<div class="codehilite"><pre><span></span>开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致，导致有 
些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境，确保了应用 
运行环境一致性，从而不会再出现「这段代码在我机器上没问题啊」这类问题。
</pre></div>


<p>持续交付和部署</p>
<div class="codehilite"><pre><span></span>对开发和运维（DevOps）人员来说，最希望的就是一次创建或配置，可以在任意地方正常运行。

使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile 
持续集成(Continuous Integration)来进行镜像构建，并结合持续部署(Continuous 
Delivery/Deployment)系统进行集成测试，而运维人员则可以直接在生产环境中快速部署该镜像，甚 
至结合系统进行自动部署。

而且使用Dockerfile使镜像构建透明化，不仅仅开发团队可以理解应用运行环境，也方便运维团队理解 
应用运行所需条件，帮助更好的生产环境中部署该镜像。
</pre></div>


<p>更轻松的迁移</p>
<div class="codehilite"><pre><span></span>由于 Docker 确保了执行环境的一致性，使得应用的迁移更加容易。Docker 可以在很多平台上运行， 
无论是物理机、虚拟机、公有云、私有云，甚至是笔记本，其运行结果是一致的。因此用户可以很轻 
易的将在一个平台上运行的应用，迁移到另一个平台上，而不用担心运行环境的变化导致应用无法正 
常运行的情况。
</pre></div>


<p>更轻松的维护和扩展</p>
<div class="codehilite"><pre><span></span> Docker 使用的分层存储以及镜像的技术，使得应用重复部分的复用更为容易，也使得应用的维护更 
 新更加简单，基于基础镜像进一步扩展镜像也变得非常简单。此外，Docker 团队同各个开源项目团 
 队一起维护了一大批高质量的官方镜像，既可以直接在生产环境使用，又可以作为基础进一步定制， 
 大大的降低了应用服务的镜像制作成本。
</pre></div>


<p>Docker镜像是什么？</p>
<div class="codehilite"><pre><span></span> 操作系统分为内核和用户空间。对于 Linux 而言，内核启动后，会挂载root文件系统为其提供用户空 
 间支持。而 Docker 镜像（Image），就相当于是一个root文件系统。比如官方镜像ubuntu:18.04就包 
 含了完整的一套 Ubuntu 18.04 最小系统的root文件系统。

 Docker 镜像是一个特殊的文件系统，除了提供容器运行时所需的程序、库、资源、配置等文件外， 
 还包含了一些为运行时准备的一些配置参数（如匿名卷、环境变量、用户等）。镜像不包含任何动态 
 数据，其内容在构建之后也不会被改变。
 通俗的讲，它是一个只读的文件，就类似于我们安装操作系统时候所需要的那个iso光盘镜像，通过运 
 行这个镜像来完成各种应用的部署。
 这里的镜像就是一个能被docker运行起来的一个程序。
</pre></div>


<p>镜像（Image）和容器（Container）的关系，就像是面向对象程序设计中的类和实例一样，镜像是静 态的定义，容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。</p>
<div class="codehilite"><pre><span></span>容器的实质是进程，但与直接在宿主执行的进程不同，容器进程运行于属于自己的独立的命名空间。 
因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间，甚至自己的用户 ID 空 
间。容器内的进程是运行在一个隔离的环境里，使用起来，就好像是在一个独立于宿主的系统下操作 
一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性，很多人初 
学 Docker 时常常会混淆容器和虚拟机。

每一个容器运行时，是以镜像为基础层，在其上创建一个当前容器的存储层，我们可以称这个为容器 
运行时读写而准备的存储层为容器存储层。

容器存储层的生存周期和容器一样，容器消亡时，容器存储层也随之消亡。因此，任何保存于容器   
存储层的信息都会随容器删除而丢失。
按照 Docker 最佳实践的要求，容器不应该向其存储层内写入任何数据，容器存储层要保持无状态 
化。所有的文件写入操作，都应该使用数据卷（Volume）、或者绑定宿主目录，在这些位置的读写会 
跳过容器存储层，直接对宿主（或网络存储）发生读写，其性能和稳定性更高。
</pre></div>


<p>docker仓库</p>
<div class="codehilite"><pre><span></span>镜像构建完成后，可以很容易的在当前宿主机上运行，但是，如果需要在其它服务器上使用这个镜 
像，我们就需要一个集中的存储、分发镜像的服务，Docker Registry 就是这样的服务。
 一个 Docker Registry 中可以包含多个仓库（Repository）；每个仓库可以包含多个标签（Tag）；每 
个标签对应一个镜像。
通常，一个仓库会包含同一个软件不同版本的镜像，而标签就常用于对应该软件的各个版本。我们可 
以通过 &lt;仓库名&gt;:&lt;标签&gt; 的格式来指定具体是这个软件哪个版本的镜像。
</pre></div>


<p>数据卷</p>
<div class="codehilite"><pre><span></span>数据卷是一个可供一个或多个容器使用的特殊目录，可以提供很多有用的特性：

数据卷可以在容器之间共享和重用

对数据卷的修改会立马生效

对数据卷的更新，不会影响镜像

数据卷默认会一直存在，即使容器被删除
</pre></div>
            <div class="widget-tag-cloud">
                <ul>
                    标签：
                    
                </ul>
            </div>
        </div>
    </article>
    <section class="comment-area" id="comment-area">
        <hr>
        <h3>发表评论</h3>
        <form action="/comment/post/18/" method="post" class="comment-form">
            
            <div class="row">
                <div class="col-md-4">
                    <label for="id_name">名字：</label>
                    <input id="id_name" maxlength="100" name="name" type="text" required />
                    
                </div>
                <div class="col-md-4">
                    <label for="id_email">邮箱：</label>
                    <input id="id_email" maxlength="255" name="email" type="email" required />
                    
                </div>
                <div class="col-md-4">
                    <label for="id_url">URL：</label>
                    <input id="id_url" maxlength="200" name="url" type="url" />
                    
                </div>
                <div class="col-md-12">
                    <label for="id_text">评论：</label>
                    <textarea cols="40" id="id_text" name="text" rows="10" required>
</textarea>
                    
                    <button type="submit" class="comment-btn">发表</button>
                </div>
            </div>    <!-- row -->
        </form>
        <div class="comment-list-panel">
            <h3>评论列表，共 <span>0</span> 条评论</h3>
            <ul class="comment-list list-unstyled">
                
                    暂无评论
                
            </ul>
        </div>
    </section>

            </main>
            <aside class="col-md-4">
                
    <div class="widget widget-content">
        <h3 class="widget-title">文章目录</h3>
        <div class="toc">
<ul></ul>
</div>

    </div>

                <div class="widget widget-recent-posts">
                    <h3 class="widget-title">最新文章</h3>
                    
                    <ul>
                        
                            <li>
                                <a href="/post/23/">数据分析推荐书籍</a>
                            </li>
                        
                            <li>
                                <a href="/post/32/">提高并发的方法</a>
                            </li>
                        
                            <li>
                                <a href="/post/25/">Python数据结构与算法（几种排序）</a>
                            </li>
                        
                            <li>
                                <a href="/post/21/">下山</a>
                            </li>
                        
                            <li>
                                <a href="/post/19/">cjj</a>
                            </li>
                        
                    </ul>
                </div>
                <div class="widget widget-archives">
                    <h3 class="widget-title">归档</h3>
                    
                    <ul>
                        
                            <li>
                                <a href="/archives/2019/12/">2019
                                    年 12 月</a>
                            </li>
                        
                            <li>
                                <a href="/archives/2019/10/">2019
                                    年 10 月</a>
                            </li>
                        
                            <li>
                                <a href="/archives/2019/8/">2019
                                    年 8 月</a>
                            </li>
                        
                    </ul>
                </div>

                <div class="widget widget-category">
                    <h3 class="widget-title">分类</h3>
                    
                    <ul>
                        
                            <li>
                                <a href="/category/1/">陈俊杰 <span
                                        class="post-count">(3)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/2/">数据库 <span
                                        class="post-count">(5)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/3/">消息队列 <span
                                        class="post-count">(3)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/4/">http、tcp/ip <span
                                        class="post-count">(6)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/5/">多任务 <span
                                        class="post-count">(3)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/6/">redis <span
                                        class="post-count">(3)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/7/">git <span
                                        class="post-count">(1)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/8/">状态保持 <span
                                        class="post-count">(2)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/10/">Docker <span
                                        class="post-count">(1)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/11/">搜索引擎 <span
                                        class="post-count">(2)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/12/">数据分析 <span
                                        class="post-count">(1)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/13/">数据结构与算法 <span
                                        class="post-count">(1)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/14/">markdown语法 <span
                                        class="post-count">(1)</span></a>
                            </li>
                        
                            <li>
                                <a href="/category/15/">非阻塞式IO <span
                                        class="post-count">(3)</span></a>
                            </li>
                        
                    </ul>
                </div>

                <div class="widget widget-tag-cloud">
                    <h3 class="widget-title">标签</h3>
                    
                    <ul>
                        
                            暂无标签！
                        
                    </ul>
                </div>

                <div class="rss">
                    <a href="#">才华撑不起野心，经济撑不起梦想</a>
                </div>
            </aside>
        </div>
    </div>
</div>
<footer id="site-footer">
    <div class="container">
        <div class="row">
            <div class="col-md-12">

                </p>
            </div>
        </div>
    </div>
</footer>

<!-- Mobile Menu -->
<div class="overlay overlay-hugeinc">
    <button type="button" class="overlay-close"><span class="ion-ios-close-empty"></span></button>
    <nav>
        <ul>
            <li><a href="/">首页</a></li>
            <li><a href="#">博客</a></li>
            <li><a href="#">关于</a></li>
            <li><a href="#">联系</a></li>
        </ul>
    </nav>
</div>

<script src="/static/blog/js/script.js"></script>

</body>
</html>
